<#--
  Service 一对多关联数据处理方法
  
  包含：
  - createWithRelations: 创建主表及关联数据
  - updateWithRelations: 更新主表及关联数据
  - getDetail 的关联数据加载（通过覆盖）
-->

    @Override
    @Transactional(rollbackFor = Exception.class)
    public ${table.entityName}DTO createWithRelations(${table.entityName}DTO dto) {
        // 1. 保存主表
        ${table.entityName}DTO result = create(dto);
        
<#if table.ext?? && table.ext.relations??>
        // 2. 保存关联数据
  <#list table.ext.relations as r>
        if (dto.get${r.alias?cap_first}() != null && !dto.get${r.alias?cap_first}().isEmpty()) {
            for (${r.dtoClass} item : dto.get${r.alias?cap_first}()) {
                // 设置外键
                // TODO: 根据实际情况调整外键设置方式，如：item.set${r.foreignKey?cap_first}(result.getId());
                // 保存子表
                // TODO: 注入子表Mapper并调用insert，如：${r.alias}Mapper.insert(EntityDTOConverter.toEntity(item, ${r.entityClass}.class));
                logger.warn("子表保存逻辑未实现：{} - 请手动实现", "${r.alias}");
            }
        }
  </#list>
</#if>
        
        return result;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public ${table.entityName}DTO updateWithRelations(${pkType} id, ${table.entityName}DTO dto) {
        // 1. 更新主表
        ${table.entityName}DTO result = update(id, dto);
        
<#if table.ext?? && table.ext.relations??>
        // 2. 处理关联数据
  <#list table.ext.relations as r>
        if (dto.get${r.alias?cap_first}() != null) {
            // 删除旧的关联数据
            // TODO: 注入子表Mapper并删除，如：${r.alias}Mapper.delete(new LambdaQueryWrapper<${r.entityClass}>().eq(${r.entityClass}::get${r.foreignKey?cap_first}, id));
            
            // 插入新的关联数据
            for (${r.dtoClass} item : dto.get${r.alias?cap_first}()) {
                // 设置外键
                // TODO: 根据实际情况调整外键设置方式，如：item.set${r.foreignKey?cap_first}(id);
                // 保存子表
                // TODO: 注入子表Mapper并调用insert，如：${r.alias}Mapper.insert(EntityDTOConverter.toEntity(item, ${r.entityClass}.class));
                logger.warn("子表更新逻辑未实现：{} - 请手动实现", "${r.alias}");
            }
        }
  </#list>
</#if>
        
        return result;
    }


